查看原文
其他

ChainX 3.0 网络升级说明

Alex ChainX社区 2021-12-09


CHAINX · PCX


2021 年 8 月 9 日晚,因大部分验证人都被卡住,ChainX 验证人无法最终确定区块,ChainX 链不幸的卡住了。目前链已恢复正常,被罚没的 PCX 被返还,您可恢复日常(链上)活动。

这里,这篇文章会解释以下问题:为什么会卡住,卡住之后的发生的一系列事情以及我们是如何解决的。如果对文章中的内容还有不清楚的地方,可以去电报群中提问,议会成员和协调人会在电报群中回答您的问题。


起始



Substrate 的共识机制分为两部分:BABE 共识和 GRANDPA 共识。其中 BABE 负责出块,GRANDPA 负责最终确定块。由于 GRANDPA(相比 BABE )往往延迟两到三个块,这就提供了快速的区块生成和方便的区块确认。在 2021.8.9 这个天选之晚,一大批节点无法完成其 GRANDPA 部分的工作,导致整个链无法再最终确定区块。

GRANDPA 需要至少 2/3 的验证人共同履行职责,选举出可以确定的区块,以保证所有人都在同一条链上,而不产生分叉。如果少于 2/3,就会暂停区块的确定,直到参与的验证人数量满足要求。这样,之后每个产生的区块,都会导致出块节点被惩罚(slash)。每次惩罚都会从节点的奖池中扣除一定数量的 PCX。限于篇幅,具体罚金的计算公式就不在这里列出了。一旦奖池被罚空,这个节点就从验证人集合中掉出了。空出的验证人席位将由候选验证人总得票最高的节点获得,并由其继续履行验证人职责。假设这个新入选的验证人能够成功执行 GRANDPA,验证人将重新达到 2/3 的门限,区块的确认就会恢复。但是,这个假设没有成真...

许多节点(运行验证人和候选人软件的服务器)卡在了最后一个确定的块:3,696,666,同时其他节点已成功进入高度 3,696,667 的块。服务器硬件性能不佳、对节点了解不足以及运维的缺失多种因素交织在一起可能是导致问题的原因。

网络进入了这样一种状态,正常的验证人节点在等待那些异常的验证人节点赶上进度恢复功能,或者通过惩罚掉出验证人而换上正常的候选节点。


恶化



社区和 PolkaX 团队一直在努力联系上所有验证人和候选节点,以便指导他们修复各自的节点。这是一场与时间的赛跑,因为网络状况正在恶化。BABE 共识设计为可以单独出块以记录交易,但是当它领先 GRANDPA 太多时,会逐渐减慢速度(以便等 GRANDPA 赶上来)。正常的出块间隔是 6 秒,但是 GRANDPA 已经卡住,BABE 的出块间隔也开始放慢,10 秒,30 秒,2 分钟,10 分钟直到不可避免的停止。社区最终无法及时联系上所有的验证人,联系上的验证人也未能及时修复他们的节点,最终网络从变慢转为了停止。


重建



节点逐渐修复,区块也开始确定,但是对网络的损害已经造成。整个链完全终止在 BABE块高 3,696,822,GRANDPA 块高 3,696,796。

PolkaX 团队导出了 3,696,796 块高时的链状态,作为一条全新链的创世信息,也就是 ChainX 3.0。在 2021 年 8 月 10 日到 11 日,经过与 ParityTech(开发 substrate 和波卡的团队)开发者的充分沟通,PolkaX 团队修改了 ChainX 软件,将 BABE 和 GRANDPA 解耦。现在 BABE 不再等待 GRANDPA 了。快速检查一切正常后,PolkaX 团队在 2021.8.12 的早上启动了新链。随着验证人逐渐加入,网络重建了。随着交易功能的恢复,用户可以继续他们日常的链上活动。

ChainX 网络于 2021.8.14 宣布恢复稳定,之后 PolkaX 团队开始计算事件中产生的罚金。当天晚些时候,绝大部分验证人和候选节点的奖池拿到了事件中被罚没的 PCX。这批补偿金是从国库中支出的。还有 3 个节点,经过其管理人的同意,在稍晚几天之后,拿到补偿。


克服危机


这篇文章写作的时候,ChainX 网络已恢复了正常运行。解耦了 BABE 和 GRANDPA 的新程序不会再发生这样的事。保持区块链持续出块,给了网络更多的时间进行自我恢复。我们也会与我们的验证人更紧密的合作,并设立更严格的硬件需求。

我们想借此机会感谢社区的耐心和支持。我们要感谢验证人在网络重建过程中保持待命并互相帮助。你们都很棒!

希望近期的困境能为其他 Substrate 项目提供正确节点运维的一个教训,能从我们微不足道的经验中学到东西。

_______________________________________

欢迎加入ChainX社区

ChainX官网
https://chainx.org
ChainX在线钱包
https://wallet.chainx.org
在线浏览器
 https://scan.chainx.org
电报群
https://t.me/chainx_org
开发文档
https://github.com/chainx-org/ChainX/wiki

_______________________________________


: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存